import java.util.Vector;
import java.util.Collections;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.PrintWriter;
import java.io.IOException;
//import java.io.BufferedReader;
//import java.io.InputStreamReader;


public class Seccion {
	
	static private String nroSeccion;
	static private Profesor profesor = null;
	static Vector <Estudiante> estudiantes = new Vector <Estudiante>();
	
	public String getNroSeccion() {
		return nroSeccion;
	}
	public void setNroSeccion(String nroSeccion) {
		Seccion.nroSeccion = nroSeccion;
	}
	public Profesor getProfesor()
	{
		return profesor;
	}
//Métodos de la clase Seccion

	public static Vector<Estudiante> getEstudiantes() {
		return estudiantes;
	}
	public static void setEstudiantes(Vector<Estudiante> estudiantes) {
		Seccion.estudiantes = estudiantes;
	}
	//Asignar profesor
	public void asigProfesor(Profesor profesor){
		Seccion.profesor = profesor;
	}
	/*public boolean VerificarProfesor(String Cedula)
	{
	  boolean encontrado;
	  if(profesor.getCedula()==Cedula)
		  return true;
	  else
		  return false;
		
	}*/
	//Inscribir un estudiante
	
	public void inscribirEstudiante(Estudiante student)
	{
		estudiantes.add(student);
	}
	
	public boolean VerificarEstudiante(String Cedula)
	{
		int i = 0;
		boolean encontrado = false;
	      if (estudiantes.size() > 0){	  
	    	  while(!encontrado && i<estudiantes.size()) {  
		          if (estudiantes.elementAt(i).getCedula().compareTo(Cedula) == 0) //Verifica Si son Iguales las cedulas!
		          {
			    	  encontrado = true;
		          }
		          i++;
		       } 
	        }
	return encontrado; 
		
	}
	//Retirar estudiantes
	public Estudiante retirarEstudiante(String Cedula){
		int i = 0;
		Estudiante er=null;
		boolean encontrado = false;
	      if (estudiantes.size() > 0) 
	      {	  
	    	  while(!encontrado && i<estudiantes.size()) {  
		          if (estudiantes.elementAt(i).getCedula().compareTo(Cedula) == 0) //Verifica Si son Iguales las cedulas!
		          {
			    	  encontrado = true;			 
			    	  er=estudiantes.remove(i);
			    	  //.remove(estudiantes.elementAt(i));
		              //System.out.println("Se retiró el estudiante satisfactoriamente");
		          }
		          i++;
		       } 
	        }
	return er;    
	}	   //del metodo
	
     //Buscar un estudiante por cedula
	public void  buscarEstudiante(String Cedula){
		
		int i = 0;
		boolean encontrado = false;
	      if (estudiantes.size() > 0){	  
	    	  while(!encontrado && i<estudiantes.size()) {  
		          if (estudiantes.elementAt(i).getCedula().compareTo(Cedula) == 0) //Verifica Si son Iguales las cedulas!
		          {
			    	  encontrado = true;
			    	  System.out.println("Datos del Estudiante:");
			    	  System.out.print("Cedula: ");
		              System.out.println(estudiantes.elementAt(i).getCedula());
		 	          System.out.print("Nombre: ");
		              System.out.println(estudiantes.elementAt(i).getNombre());
		              System.out.print("Apellido: ");
		              System.out.println(estudiantes.elementAt(i).getApellido());
		          }
		          i++;
		       } 
			if (encontrado == false)
			System.out.println("Estudiante no inscrito");	
	        }
	    }
	
public int  buscarEstudianteMenu(String Cedula){
		
		int i = 0;
		boolean encontrado = false;
	      if (estudiantes.size() > 0){	  
	    	  while(!encontrado && i<estudiantes.size()) {  
		          if (estudiantes.elementAt(i).getCedula().compareTo(Cedula) == 0) //Verifica Si son Iguales las cedulas!
		          {
			    	  encontrado = true;
			    	  /*System.out.println("Datos del Estudiante:");
			    	  System.out.print("Cedula: ");
		              System.out.println(estudiantes.elementAt(i).getCedula());
		 	          System.out.print("Nombre: ");
		              System.out.println(estudiantes.elementAt(i).getNombre());
		              System.out.print("Apellido: ");
		              System.out.println(estudiantes.elementAt(i).getApellido());*/
		              /*estm.setCedula(estudiantes.elementAt(i).getCedula()) ;
		              estm.setNombre(estudiantes.elementAt(i).getNombre()) ;
		              estm.setApellido(estudiantes.elementAt(i).getApellido()) ;*/
		             
		              
		          }
		          i++;
		          
		       } 
			
	    	  
	        }
	      return i-1;
}	
	
	
	
		
	
	//Aplicar evaluaciones
	 public void aplicarEvaluaciones(){
		 Estudiante student;
		 
			if (estudiantes.size()!=0) 
			{
				for (int i=0;i<estudiantes.size();i++)
				{
	
				student= estudiantes.elementAt(i);
				student.presentarEvaluaciones();
				profesor.evaluarEstudiante(student);
				}
				System.out.println("Evaluaciones Aplicadas en la Seccion");
			}
			else 
			{
			System.out.println("No se pueden aplicar evaluaciones en la seccion");
			System.out.println("No existen Estudiantes Inscritos ");
			}
	 }
	 //Lista de Estudiantes ordenados por cedula de identidad
	 public void EstudiantesOrdenadosCedula()
	 {
		 Collections.sort(estudiantes, new OrdenaCedula());
	 }
	 
	//Listar estudiantes ordenados por nota final
	 
	 public void listarNotaFinal()
	 {
		 Collections.sort(estudiantes, new OrdenaNotaF());
	 }
	 
	    //Listar estudiantes aprobados   
		public void listarAprobados(){
			int i = 0 ;
			if(estudiantes.size()!= 0)
			{
				while (i<estudiantes.size() && estudiantes.elementAt(i).getEstatus() == ("Aprobado"))
				{
					System.out.print("Cedula del estudiante:");
	                System.out.println(estudiantes.elementAt(i).getCedula());
	 	           	System.out.print("Nombre:");
	                System.out.println(estudiantes.elementAt(i).getNombre());
	                System.out.print("Apellido:");
	                System.out.println(estudiantes.elementAt(i).getApellido());
	                System.out.print("Nota Final:");
	                System.out.println(estudiantes.elementAt(i).getNotaFinal());
	                System.out.println("-----------------------------");
	                i++;
				}
				if(i== 0)
				{
					System.out.println("No hay estudiantes aprobados");
				}
			}
			else 
			{
				System.out.println("No hay estudiantes inscritos");
			}
	    	
		}
		
	    //Listar estudiantes aplazados.
		public void listarReprobados()
		{
			int i = 0 ;
			if(estudiantes.size()!= 0)
			{
				while (i<estudiantes.size() && estudiantes.elementAt(i).getEstatus() == ("Reprobado"))
				{
					System.out.print("Cedula del estudiante:");
	                System.out.println(estudiantes.elementAt(i).getCedula());
	 	           	System.out.print("Nombre:");
	                System.out.println(estudiantes.elementAt(i).getNombre());
	                System.out.print("Apellido:");
	                System.out.println(estudiantes.elementAt(i).getApellido());
	                System.out.print("Nota Final:");
	                System.out.println(estudiantes.elementAt(i).getNotaFinal());
	                i++;
				}
				if(i== 0)
				{
					System.out.println("No hay estudiantes reprobados");
				}
			}
			else 
			{
				System.out.println("No hay estudiantes inscritos");
			}
		}
		
		//Mostar promedio de notas
		public void promedioNotasSeccion()
		{
			float prom=0;
	        float total=0;
	    	int i;
	 
	    	for(i=0; i<estudiantes.size(); i++){
	    		total= total + estudiantes.elementAt(i).getNotaFinal();
	    		}
	    		if (estudiantes.size() == 0)
	    			System.out.println("No hay estudiantes inscritos en la sección");
	    		else
	              prom = total/estudiantes.size();
	    		System.out.println("El promedio de los estudiantes es"); 
	    		System.out.println(prom);
		}
		public float promedioNotasSeccionMenu()
		{
			float prom=0;
	        float total=0;
	    	int i;
	 
	    	for(i=0; i<estudiantes.size(); i++){
	    		total= total + estudiantes.elementAt(i).getNotaFinal();
	    		}
	    		if (estudiantes.size() == 0)
	    		{
	    			//System.out.println("No hay estudiantes inscritos en la sección");
	    		}
	    		else{
	    			prom = total/estudiantes.size();
	    		}
	              
	    		//System.out.println("El promedio de los estudiantes es"); 
	    		//System.out.println(prom);
	    		return prom;
		}
		//Metodo Reusable de Impresion
		public void Imprimir()
		{
			
			if(estudiantes.size()!= 0)
			{
			
			int i=0;
	    	  while(i<estudiantes.size())
	    	  {	  
	    		  System.out.print("Cedula del estudiante:");
	    		  System.out.println (estudiantes.elementAt(i).getCedula());
	    		  System.out.print("Nombre:");
	    		  System.out.println (estudiantes.elementAt(i).getNombre());
	    		  System.out.print("Apellido:");
	    		  System.out.println (estudiantes.elementAt(i).getApellido());
	    		  System.out.print("Nota Final:");
	    		  System.out.println(estudiantes.elementAt(i).getNotaFinal());
	    		  System.out.println("-----------------------------");
	    	  i++;
	    	  }
			}
			else 
				{
					System.out.println("No hay estudiantes inscritos");
				}
		}
	
		//Metodo Reusable para guardar listado en los Archivos
		
		public void  GuardarArchivo(String nombrearchivo)
		{
			
			try {
				
				 FileWriter fw;
			
				fw = new FileWriter(nombrearchivo,true);
			
			    BufferedWriter bw=  new BufferedWriter(fw);
			    PrintWriter out = new PrintWriter(bw);
			
			int i=0;
	    	  while(i<estudiantes.size())
	    	  {	  
	    		  out.print("Cedula del estudiante:");
	    		  out.println (estudiantes.elementAt(i).getCedula());
	    		  out.print("Nombre:");
	    		  out.println (estudiantes.elementAt(i).getNombre());
	    		  out.print("Apellido:");
	    		  out.println (estudiantes.elementAt(i).getApellido());
	    		  out.print("Nota Final:");
	              out.println(estudiantes.elementAt(i).getNotaFinal());
	              out.println("-----------------------------");
	    	  i++;
	    	  }
	    	  out.close();
			  bw = new BufferedWriter(new FileWriter(nombrearchivo,true));
			 
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		
		}
		
		/*public void Imprimirarchivo(String nombrearchivo){
			try {
			
				 FileWriter fw;
			
				fw = new FileWriter(nombrearchivo,true);
			
			    BufferedWriter bw=  new BufferedWriter(fw);
			    PrintWriter out = new PrintWriter(bw);
			    //out.println("Prueba");
			    //bw = new BufferedWriter(new FileWriter(nombrearchivo, true));
			    out.println("Prueba");
			    out.close();
			    bw = new BufferedWriter(new FileWriter(nombrearchivo,true));
			 
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			
			
		}
*/
		
}//fin de clase Seccion


